package com.nuanshui.heatedloan.userinfo.dal.mapper;

import com.nuanshui.heatedloan.userinfo.model.UserWeixinOpenId;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 用户 微信账号的相关操作
 * @author GH
 *
 */
public interface UserWeixinAccountMapper {

	/**
	 * 获取用户某种类型的openId
	 * @param @return
	 * @author guohao
	 * @date 2016年4月21日 下午4:43:48
	 * @since $
	 */
    String loadOpenIdBySource(@Param("source") int source);
	
	/**
	 *保存
	 * @param @param openId
	 * @param @return
	 * @author guohao
	 * @date 2016年4月21日 下午4:55:45
	 * @since $
	 */
    void insert(UserWeixinOpenId userWeixinOpenId);
	
	/**
	 * 根据unionId获取个数（主要是判断unionId是否存在）
	 * @param @return
	 * @author guohao
	 * @date 2016年4月21日 下午5:08:47
	 * @since $
	 */
    Long countByUnionId(@Param("unionId") String unionId);
	
	/**
	 * 根据openId获取一个账号
	 * @param @return
	 * @author guohao
	 * @date 2016年4月21日 下午7:45:19
	 * @since $
	 */
    UserWeixinOpenId loadByOpenId(String openId);
	
	/**
	 * 依据用户id获得openid
	 * @param userId
	 * @return
	 */
    String getOpenIdByUserId(@Param("userId") String userId);
	/**
	 * 依据用户id获得openid
	 * @param userId
	 * @return
	 */
    List<UserWeixinOpenId> getOpenIdsByUserIds(@Param("whereIn") String whereIn);

    /**
     * 
     * @param @param userId
     * @param @param unionId
     * @author guohao
     * @date 2016年6月16日 下午7:22:57
     * @since $
     */
    void updateWeixinOpenIdAccountUserId(@Param("openId") String openId, @Param("userId") String userId, @Param("unionId") String unionId);

    void deleteWeixinOpenIdAccount(@Param("userId") String userId);
    
    void deleteWeixinOpenIdAccountByUnionId(@Param("unionId") String unionId);
    
}
